!function(){"use strict";const e=(e,t,n)=>{const i="symbol"!=typeof t?t+"":t;return t in e?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n};class t{constructor(e){this.message=`[Circular Reference to ${e}]`}}class n{constructor(e,t){this._type=e,this.value=t}}function i(e,r={},s=new WeakMap,o="root",a=0){const{maxDepth:c=10,maxStringLength:l=1e4,maxArrayLength:h=100,maxObjectKeys:u=100,includeSymbols:d=!0}=r;if(a>c)return new n("MaxDepthReached","[Max depth reached]");if(void 0===e)return new n("undefined","undefined");if(null===e)return null;if("string"==typeof e)return e.length>l?new n("String",`${e.slice(0,l)}... [${e.length-l} more chars]`):e;if("number"==typeof e)return Number.isNaN(e)?new n("Number","NaN"):Number.isFinite(e)?e:new n("Number",e>0?"Infinity":"-Infinity");if("boolean"==typeof e)return e;if("bigint"==typeof e)return new n("BigInt",e.toString());if("symbol"==typeof e)return new n("Symbol",e.toString());if("function"==typeof e)return new n("Function",{name:e.name||"anonymous",body:e.toString().slice(0,l)});if(e&&"object"==typeof e){if(s.has(e))return new t(s.get(e));s.set(e,o)}if(e instanceof Error){const t={name:e.name,message:e.message,stack:e.stack};for(let n of Object.getOwnPropertyNames(e))t[n]||(t[n]=i(e[n],r,s,`${o}.${n}`,a+1));return new n("Error",t)}if(e instanceof Date)return new n("Date",{iso:e.toISOString(),timestamp:e.valueOf()});if(e instanceof RegExp)return new n("RegExp",{source:e.source,flags:e.flags});if(e instanceof Promise)return new n("Promise","[Promise]");if(e instanceof WeakMap||e instanceof WeakSet)return new n(e.constructor.name,`[${e.constructor.name}]`);if(e instanceof Set){const t=Array.from(e),c=t.length>h;return new n("Set",{values:t.slice(0,h).map(((e,t)=>i(e,r,s,`${o}.Set[${t}]`,a+1))),truncated:c?t.length-h:void 0})}if(e instanceof Map){const t={};let c=0,l=0;for(let[n,h]of e.entries()){if(c>=u){l++;continue}const e="object"==typeof n?JSON.stringify(i(n,r,s,`${o}.MapKey`,a+1)):String(n);t[e]=i(h,r,s,`${o}.Map[${e}]`,a+1),c++}return new n("Map",{entries:t,truncated:l||void 0})}if(ArrayBuffer.isView(e))return new n(e.constructor.name,{length:e.length,byteLength:e.byteLength,sample:Array.from(e.slice(0,10))});if(Array.isArray(e)){const t=e.length>h,n=e.slice(0,h).map(((e,t)=>i(e,r,s,`${o}[${t}]`,a+1)));return t&&n.push(`... ${e.length-h} more items`),n}const m={},g=Object.getOwnPropertyNames(e);return d&&g.push(...Object.getOwnPropertySymbols(e).map((e=>e.toString()))),g.slice(0,u).forEach((t=>{try{m[t]=i(e[t],r,s,`${o}.${t}`,a+1)}catch(c){m[t]=new n("Error",`[Serialize failed: ${c.message}]`)}})),g.length>u&&(m["..."]=g.length-u+" more properties"),m}const r=new class{constructor(){e(this,"currentTargetWindow"),e(this,"handlers",{}),e(this,"pending"),this.pending=new Map,this.listen()}get targetWindow(){if("undefined"!=typeof window)return window.parent}get targetOrigin(){return this.currentTargetWindow?this.currentTargetWindow:"*"}allowOrigin(e){return[/onspace\.ai/,/ang\.cc/,/localhost|127\.0\.0\.1/,/ons\./,/192\.168\./,/10\.250/,/172\.(1[6-9]|2[0-9]|3[01])\./].some((t=>t.test(e)))}setTarget(e){this.currentTargetWindow=e.origin}sendEvent(e,t=3,n=1e3){const i=Date.now()+Math.random().toString(36).substring(2),r={id:i,...JSON.parse(JSON.stringify(e))},s=(e=0)=>{const o=this.targetWindow;o&&o.postMessage(r,this.targetOrigin);const a=n*Math.pow(2,e),c=setTimeout((()=>{e>=t?this.pending.delete(i):s(e+1)}),a);this.pending.set(i,{timer:c,attempt:e})};s()}listen(){window.addEventListener("message",(e=>{var t;this.allowOrigin(e.origin)&&(null==(t=e.data)?void 0:t.event)&&(e.data.id||e.data.originalId)&&(this.currentTargetWindow||this.setTarget({origin:e.origin}),"ack"===e.data.event?this.handleAckMessage(e.data):this.handleRegularMessage(e))}))}handleAckMessage(e){const{originalId:t}=e,n=this.pending.get(t);n&&(clearTimeout(n.timer),this.pending.delete(t))}handleRegularMessage(e){const t=this.targetWindow;t&&t.postMessage({event:"ack",originalId:e.data.id},e.origin);const n=this.handlers[e.data.event];n&&n(e.data.data)}onEvent(e,t){this.handlers[e]=t}},s={enabled:!0,checkDelays:[3e3,6e3,1e4],minTextLength:5,minVisibleElements:10,selectors:["main",".content","#app","#root",".container"],skeletonSelectors:[".skeleton",".loading","[data-skeleton]",".placeholder",".shimmer"],maxCheckElements:100,maxTraverseDepth:10,minHTMLLength:500};class o{constructor(e={},t){this.config=this.mergeConfig(s,e),this.isInitialized=!1,this.checkTimers=[],this.checkResults=[],this.startTime=null,this.hasReported=!1,this.sendReport=t}mergeConfig(e,t){return{...e,...t}}initialize(){!this.isInitialized&&this.config.enabled&&"undefined"!=typeof window&&"undefined"!=typeof document&&(this.scheduleChecks(),this.setupUnloadHandler(),this.isInitialized=!0)}scheduleChecks(){const e=()=>{this.startTime=Date.now(),this.config.checkDelays.forEach(((e,t)=>{const n=setTimeout((()=>{this.performCheck(t)}),e);this.checkTimers.push(n)}))};"complete"===document.readyState?e():window.addEventListener("load",e,{once:!0})}setupUnloadHandler(){const e=()=>{this.handlePageUnload()};window.addEventListener("beforeunload",e),window.addEventListener("pagehide",e),this.unloadHandler=e}handlePageUnload(){if(this.hasReported)return;const e=this.checkResults.filter((e=>e.isWhiteScreen));if(e.length>0){const t=e[e.length-1];this.reportWhitescreen(t,!0)}else if(0===this.checkResults.length&&this.startTime)try{const e=this.checkWhitescreen();e.isWhiteScreen&&this.reportWhitescreen(e,!0)}catch(t){}this.clearPendingChecks()}performCheck(e=0){if(document.hidden)return void document.addEventListener("visibilitychange",(()=>{document.hidden||this.performCheck(e)}),{once:!0});const t=this.checkWhitescreen();if(this.checkResults.push(t),!t.isWhiteScreen)return void this.clearPendingChecks();const n=e===this.config.checkDelays.length-1;t.isWhiteScreen&&n&&this.reportWhitescreen(t,!1)}clearPendingChecks(){this.checkTimers.forEach((e=>clearTimeout(e))),this.checkTimers=[]}checkWhitescreen(){const e=performance.now();try{if(!document.body)return this.createResult(!0,{reason:"no_body"},e);const t=this.collectMetrics(),n=this.isWhitescreenByMetrics(t);return this.createResult(n,t,e)}catch(t){return this.createResult(!1,{error:t.message},e)}}collectMetrics(){return{hasMainContent:this.checkMainContent(),hasSkeleton:this.checkSkeleton(),textLength:this.getTextLength(),visibleCount:this.countVisibleElements(),htmlLength:document.body.innerHTML.length,hasMediaElements:this.checkMediaElements(),hasInteractiveElements:this.checkInteractiveElements()}}checkMainContent(){for(const t of this.config.selectors)try{const e=document.querySelector(t);if(e&&e.children.length>0&&e.textContent.trim().length>5)return!0}catch(e){}return!1}checkSkeleton(){for(const t of this.config.skeletonSelectors)try{if(document.querySelector(t))return!0}catch(e){}return!1}getTextLength(){try{return document.body.innerText.trim().length}catch(e){return 0}}countVisibleElements(){let e=0,t=0;const n=this.config.maxCheckElements,i=this.config.minVisibleElements;try{const r=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t=e.tagName.toLowerCase();return["script","style","noscript","template"].includes(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}});let s;for(;(s=r.nextNode())&&t=2*i))return e}catch(r){}return e}isElementVisible(e){try{if(!e.offsetParent&&e!==document.body){const t=this.getStyleValue(e,"position");if("fixed"!==t&&"sticky"!==t)return!1}if(0===e.offsetWidth||0===e.offsetHeight)return!1;if("none"===this.getStyleValue(e,"display"))return!1;const t=this.getStyleValue(e,"visibility");return"hidden"!==t&&"collapse"!==t}catch(t){return!1}}getStyleValue(e,t){try{return e.style[t]?e.style[t]:window.getComputedStyle(e)[t]}catch(n){return""}}checkMediaElements(){try{const e="img, svg, canvas, video, picture",t=document.querySelectorAll(e);for(const n of t)if("IMG"===n.tagName){if(n.complete&&n.naturalWidth>0)return!0}else if(this.isElementVisible(n))return!0}catch(e){}return!1}checkInteractiveElements(){try{const e="button, a, input, select, textarea, [onclick], [tabindex]",t=document.querySelectorAll(e);for(const n of t)if(this.isElementVisible(n))return!0}catch(e){}return!1}isWhitescreenByMetrics(e){return!(e.hasSkeleton||e.hasMainContent||e.textLength>=this.config.minTextLength||e.visibleCount>=this.config.minVisibleElements||e.hasMediaElements||e.hasInteractiveElements)}createResult(e,t,n){return{isWhiteScreen:e,checkTime:(new Date).toISOString(),duration:Math.round(performance.now()-n),metrics:t}}reportWhitescreen(e,t=!1){const n={type:"WHITESCREEN_DETECT",url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),isWhiteScreen:e.isWhiteScreen,details:e.metrics,checkTime:e.checkTime,duration:Math.round(Date.now()-this.startTime),isUnloadReport:t,reportTrigger:t?"page_unload":"scheduled_check"};this.hasReported=!0,this.sendReport(n)}destroy(){this.clearPendingChecks(),this.unloadHandler&&(window.removeEventListener("beforeunload",this.unloadHandler),window.removeEventListener("pagehide",this.unloadHandler),this.unloadHandler=null),this.isInitialized=!1,this.checkResults=[],this.startTime=null,this.hasReported=!1}}!function(){const e={reportUrl:"",debounceTime:5e3,maxDepth:10,maxStringLength:1e4,maxArrayLength:100,maxObjectKeys:100,includeSymbols:!0,networkMonitor:{enabled:!0,sensitiveKeys:["password","token","authorization","cookie","session","key","secret"],batchReport:{enabled:!0,maxBatchSize:10,maxWaitTime:3e3}},consoleMonitor:{enabled:!0,levels:["log","warn","error"],captureStack:["warn","error"],maxMessageLength:1e4,batchReport:{enabled:!0,maxBatchSize:10,maxWaitTime:3e3}},clickMonitor:{enabled:!0,maxTextLength:100,debounceTime:100,batchReport:{enabled:!0,maxBatchSize:8,maxWaitTime:2500}},reporter:{enableHttpReport:!1,enableMessageHandler:!0}},t={log:"info",warn:"warning",error:"error"};function n(){try{return window.self!==window.top}catch(e){return!0}}if("undefined"!=typeof window&&"undefined"!=typeof document&&n()){class r{constructor(e,t){this.buffer=[],this.maxBatchSize=e.maxBatchSize,this.maxWaitTime=e.maxWaitTime,this.timer=null,this.isDestroyed=!1,this.lastReportTime=Date.now(),this.reportType=t}addItem(e){this.isDestroyed||(this.buffer.push(e),this.buffer.length>=this.maxBatchSize?this.flush():this.timer||this.startTimer())}flush(){if(this.isDestroyed||0===this.buffer.length)return;const e=this.buffer.splice(0,this.buffer.length),t=Date.now(),n=this.createBatchData(e,t);this.clearTimer(),this.lastReportTime=t,l(n)}createBatchData(e,t){throw new Error("createBatchData method must be implemented by subclass")}startTimer(){this.timer||this.isDestroyed||(this.timer=setTimeout((()=>{this.flush()}),this.maxWaitTime))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}destroy(){this.isDestroyed=!0,this.flush(),this.clearTimer()}}class s extends r{constructor(){super(e.consoleMonitor.batchReport,"CONSOLE_OUTPUT")}addMessage(e){this.addItem(e)}createBatchData(e,t){var n;return{type:this.reportType,url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),batchInfo:{count:e.length,timespan:t-this.lastReportTime,bufferTime:t-((null==(n=e[0])?void 0:n.logged_at)?new Date(e[0].logged_at).getTime():t)},messages:e}}}class h extends r{constructor(){super(e.networkMonitor.batchReport,"NETWORK_BATCH_REPORT")}addRequest(e){this.addItem(e)}createBatchData(e,t){var n,i;return{type:this.reportType,url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),batchInfo:{count:e.length,timespan:t-this.lastReportTime,bufferTime:t-((null==(i=null==(n=e[0])?void 0:n.request)?void 0:i.timestamp)?new Date(e[0].request.timestamp).getTime():t)},requests:e}}}class u extends r{constructor(){super(e.clickMonitor.batchReport,"USER_CLICK_EVENTS")}addClick(e){this.addItem(e)}createBatchData(e,t){var n;return{type:this.reportType,url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),batchInfo:{count:e.length,timespan:t-this.lastReportTime,bufferTime:t-((null==(n=e[0])?void 0:n.timestamp)?new Date(e[0].timestamp).getTime():t)},clicks:e}}}class d{constructor(){this.originalXHR=null,this.originalFetch=null,this.isInitialized=!1,this.reportBuffer=null}initialize(){!this.isInitialized&&e.networkMonitor.enabled&&(e.networkMonitor.batchReport.enabled&&(this.reportBuffer=new h),this.hijackXMLHttpRequest(),this.hijackFetch(),this.isInitialized=!0)}hijackXMLHttpRequest(){if("undefined"==typeof XMLHttpRequest)return;this.originalXHR={open:XMLHttpRequest.prototype.open,send:XMLHttpRequest.prototype.send};const e=this;XMLHttpRequest.prototype.open=function(t,n,i,r,s){return this._requestInfo={id:Date.now()+Math.random().toString(36).substring(2),method:t.toUpperCase(),url:n,startTime:Date.now(),params:{}},e.originalXHR.open.call(this,t,n,i,r,s)},XMLHttpRequest.prototype.send=function(t){return this._requestInfo&&(this._requestInfo.params=a(t,{}),this.addEventListener("loadend",(()=>{const t={status:this.status,headers:{},responseText:this.responseText};try{const e=this.getAllResponseHeaders();e&&e.split("\r\n").forEach((e=>{const n=e.split(": ");2===n.length&&(t.headers[n[0]]=n[1])}))}catch(n){}e.reportRequest(this._requestInfo,t,null,this.responseText)})),this.addEventListener("error",(()=>{e.reportRequest(this._requestInfo,null,"Network error","")}))),e.originalXHR.send.call(this,t)}}hijackFetch(){if("undefined"==typeof fetch)return;this.originalFetch=window.fetch;const e=this;window.fetch=function(t,n={}){const i="string"==typeof t?t:t.url,r=(n.method||"GET").toUpperCase(),s={id:Date.now()+Math.random().toString(36).substring(2),method:r,url:i,startTime:Date.now(),params:a(n.body,n.headers)};return e.originalFetch.call(this,t,n).then((t=>{const n={status:t.status,headers:t.headers,ok:t.ok};return t.clone().text().then((t=>{e.reportRequest(s,n,null,t)})).catch((()=>{e.reportRequest(s,n,null,"")})),t})).catch((t=>{throw e.reportRequest(s,null,t.message,""),t}))}}reportRequest(t,n,i=null,r=""){const s=Date.now()-t.startTime,o=function(e,t=null,n=""){var i,r;const s={status:(null==e?void 0:e.status)||0,success:!t&&(null==e?void 0:e.status)>=200&&(null==e?void 0:e.status)<400,size:0,error:null,summary:n?`${n.slice(0,2048)}... [truncated ${n.length-2048} chars]`:""};if(t)s.error=t.slice(0,200);else if(e){const t=null==(r=null==(i=e.headers)?void 0:i.get)?void 0:r.call(i,"content-length");t&&(s.size=parseInt(t,10)||0)}return s}(n,i,r),a={type:"NETWORK_REQUEST",url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),request:{id:t.id,url:t.url,method:t.method,params:t.params,timestamp:new Date(t.startTime).toISOString()},response:{...o,duration:s}};this.reportBuffer&&e.networkMonitor.batchReport.enabled?this.reportBuffer.addRequest(a):l(a)}destroy(){this.reportBuffer&&(this.reportBuffer.destroy(),this.reportBuffer=null),this.originalXHR&&(XMLHttpRequest.prototype.open=this.originalXHR.open,XMLHttpRequest.prototype.send=this.originalXHR.send,this.originalXHR=null),this.originalFetch&&(window.fetch=this.originalFetch,this.originalFetch=null),this.isInitialized=!1}}class m{constructor(){this.isInitialized=!1,this.reportBuffer=null,this.clickHandler=null,this.lastClickTime=0,this.lastClickTarget=null}initialize(){!this.isInitialized&&e.clickMonitor.enabled&&(e.clickMonitor.batchReport.enabled&&(this.reportBuffer=new u),this.clickHandler=e=>this.handleClick(e),document.addEventListener("click",this.clickHandler,!0),this.isInitialized=!0)}handleClick(t){try{const n=Date.now();if(this.lastClickTarget===t.target&&n-this.lastClickTime{this.hijackConsole(e)})),this.isInitialized=!0)}hijackConsole(n){const r=this;console[n]=function(...s){r.originalConsole[n].apply(console,s);let o=null;if(e.consoleMonitor.captureStack.includes(n))try{const e=new Error;e.stack&&(o=e.stack.split("\n").slice(2).join("\n"))}catch(h){}const a={maxDepth:e.maxDepth,maxStringLength:e.maxStringLength,maxArrayLength:e.maxArrayLength,maxObjectKeys:e.maxObjectKeys,includeSymbols:e.includeSymbols},c=s.map((e=>i(e,a))).map((e=>"string"==typeof e?e:JSON.stringify(e,null,2).slice(0,5e3))).join(" ")+(o?"\n"+o:""),l={level:t[n],message:c.slice(0,e.consoleMonitor.maxMessageLength),logged_at:(new Date).toISOString()};r.reportMessage(l)}}reportMessage(t){this.reportBuffer&&e.consoleMonitor.batchReport.enabled?this.reportBuffer.addMessage(t):l({type:"CONSOLE_OUTPUT",url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),messages:[t]})}destroy(){this.reportBuffer&&(this.reportBuffer.destroy(),this.reportBuffer=null),this.originalConsole&&(console.log=this.originalConsole.log,console.warn=this.originalConsole.warn,console.error=this.originalConsole.error),this.isInitialized=!1}}!function(){if(!window.__ONSPACE_MONITOR_INITIALIZED__){window.__ONSPACE_MONITOR_INITIALIZED__=!0;try{const t=new g;t.initialize();const i=new d;i.initialize();const r=new m;r.initialize();const s=new o({},l);s.initialize(),l({type:"SDK_INITIALIZATION",url:window.location.href,userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),sdk_version:"1.0.0",modules:["console","network","click","whitescreen"],environment:{isInIframe:n(),viewport:{width:window.innerWidth,height:window.innerHeight}}}),window.addEventListener("beforeunload",(()=>{i&&i.reportBuffer&&i.reportBuffer.destroy(),t&&t.reportBuffer&&t.reportBuffer.destroy(),r&&r.reportBuffer&&r.reportBuffer.destroy()})),window.__ONSPACE_MONITOR__={consoleMonitor:t,networkMonitor:i,clickMonitor:r,whitescreenDetector:s,sendReport:l,config:e}}catch(t){}}}()}function s(t){if(!t||"object"!=typeof t)return t;const n={},i=e.networkMonitor.sensitiveKeys;for(const[e,r]of Object.entries(t)){const t=e.toLowerCase(),s=i.some((e=>t.includes(e.toLowerCase())));n[e]=s?"[FILTERED]":r}return n}function a(e,t){let n={};if(e)if("string"==typeof e)try{n.body=JSON.parse(e)}catch(r){if(e.includes("=")){const t=new URLSearchParams(e);n.body=Object.fromEntries(t)}else n.body=e.slice(0,200)}else e instanceof FormData?n.body=Object.fromEntries(e):n.body=e;t&&(n.headers=s(t)),n=s(n);let i=JSON.stringify(n);return i.length>2048&&(i=`${i.slice(0,2048)}... [truncated ${i.length-2048} chars]`),i}function c(e,t){let n="";return e.innerText?n=e.innerText.trim():e.textContent&&(n=e.textContent.trim()),n||("INPUT"===e.tagName?n=e.value||e.placeholder||"":"IMG"===e.tagName&&(n=e.alt||e.title||"")),n.slice(0,t)}function l(t){try{e.reporter.enableHttpReport&&function(t){if(!e.reportUrl)return;const n={...t,sdk_version:"1.0.0",sdk_type:"onspace-monitor"},i=JSON.stringify(n);if(navigator.sendBeacon&&navigator.sendBeacon(e.reportUrl,new Blob([i],{type:"application/json"})))return;const r=encodeURIComponent(i),s=`${e.reportUrl}?data=${r}`;(new Image).src=s}(t),e.reporter.enableMessageHandler&&function(e){r.sendEvent({event:"monitoring_report",data:{...e,sdk_version:"1.0.0",sdk_type:"onspace-monitor",report_time:(new Date).toISOString()}})}(t)}catch(n){}}}()}();